package com.candy.mmcock;

/**
 * @author donglin
 * @Title:
 * @类名: Kitchen
 * @date 2020/6/2
 */
public class Kitchen {
    //声明属性：食物，初始值设置为0，即厨房里原本没有食物
    private int food=0;
    //方法，做饭
    public synchronized void do_cock() throws InterruptedException {
        //当food值是1的时候，说明有食物，这个时候妈妈不做饭，进行等待，等待孩子把食物吃完，food值为0时，开始做饭
        if(food==1){
            this.wait();
        }else {
            //当food值是0的时候，说明厨房没有食物了，开始做饭
            System.out.println(Thread.currentThread().getName()+"正在做饭。。。。。。");
            Thread.sleep(2000);
            //饭做好后，food值+1
            food++;
            //饭做好了，通知孩子们吃饭
            System.out.println("饭做好了，快过来吃吧。。。。。"+food);
            this.notifyAll();
        }
    }
    //方法：吃饭
    public synchronized void do_eat() throws InterruptedException {
        //当food值为0，说明没有食物可以吃，这个时候需要等待
        if(food==0){
            this.wait();
        }else {
            //获取当前调用该方法的对象
            Child c= (Child) Thread.currentThread();
            System.out.println(c.getName()+"抢到食物，开始吃饭。。。。。");
            //抢到资源（饭）的孩子吃饭结束后，food值-1
            food--;
            //吃饭结束后，体力值+1
            c.setHp(c.getHp()+1);
            //获取并打印当前抢到食物正在吃饭的孩子的体力值
            System.out.println(c.getName()+"目前的体力值是："+c.getHp());
            //打印食物信息
            System.out.println("food========="+food);
            //唤醒线程（妈妈-做饭）
            this.notifyAll();
        }
    }




}
